#ifndef HEAD_H
#define HEAD_H
#include <my_header.h>
#include "queue.h"
#include "login.h"
#include "command.h"
#include "mysql.h"


extern int global_thread_num;
extern int global_server_log_fd; 
extern char global_ip[20];
extern char global_port[20];

int config_init();

//定义一个结构体用来记录线程池相关的线程ID、线程个数、互斥锁、条件变量、任务队列
typedef struct thread_pool_s{
    //线程ID
    pthread_t *threadIDs;
    //线程个数
    int num;
    //互斥锁
    pthread_mutex_t lock;
    //条件变量
    pthread_cond_t cond;
    //任务队列
    queue_t queue;

}thread_pool_t;

//初始化线程池
void init_thread_pool(thread_pool_t *pool, int num);

//tcp初始连接监听
void tcp_init(int *socketFD, char *ip, char *port);

//epoll监听
void epoll_add(int epollFD, int file_fd);

//线程的入口位置
void *thread_main(void *arg);

//服务端和客户交互
void start_work(int netFD, MYSQL *connect);

//初始化用户信息
void user_init(client_t *cl, MYSQL *con);

#endif
